/**
 * "Visual Paradigm: DO NOT MODIFY THIS FILE!"
 * 
 * This is an automatic generated file. It will be regenerated every time 
 * you generate persistence class.
 * 
 * Modifying its content may cause the program not work, or your work may lost.
 */

/**
 * Licensee: Universidad de Almeria
 * License Type: Purchased
 */
package foroindaltronia.bd;

import org.orm.PersistentException;

/**
 * ORM-Component Class
 */
public class BD_temas_terminales {
	public BD_temas_terminales() {
	}

	public foroindaltronia.bd.Tema[] verTemas(Tema temaPadre)
	{
		foroindaltronia.bd.Tema[] foroIndaltroniaBDTema=null;
		try {
			foroIndaltroniaBDTema = foroindaltronia.bd.TemaDAO.listTemaByQuery(null, null);
		} catch (PersistentException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return foroIndaltroniaBDTema;
	}

	/**public void crearTema(Tema_no_terminal_visible tema) {
                foroindaltronia.bd.Tema_no_terminal_visibleDAO.save(tema);
        }**/

	public void crearTema(Tema tema) {
		if(tema instanceof Tema_terminal_visible)
		{
			((Tema_terminal_visible)tema).setNumeroMensajes(0);
			foroindaltronia.bd.Tema_terminal_visibleDAO.save((Tema_terminal_visible)tema);
		}
		else
		{
			((Tema_teminal_oculto)tema).setNumeroMensajes(0);
			foroindaltronia.bd.Tema_teminal_ocultoDAO.save((Tema_teminal_oculto)tema);
		}
	}

	public Tema buscarPorNombre(String nombrePadre) {
		foroindaltronia.bd.Tema[] foroIndaltroniaBDTema=null;
		try {
			foroIndaltroniaBDTema = foroindaltronia.bd.TemaDAO.listTemaByQuery("Nombre = '"+nombrePadre+"' AND (Discriminator = 'tema_terminal_visible' OR Discriminator = 'tema_teminal_oculto')",null);
		} catch (PersistentException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return foroIndaltroniaBDTema[0];
	}

	public void borrarTema(int i) {
		Tema_terminal_visible ttv;
		try {
			ttv = foroindaltronia.bd.Tema_terminal_visibleDAO.loadTema_terminal_visibleByQuery("ID = '"+i+"'",null);
			foroindaltronia.bd.Tema_terminal_visibleDAO.delete(ttv);
		} catch (PersistentException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

	public boolean getNumeroMensajes(Mensaje mensaje) {
		try {
			Tema temaPadre = foroindaltronia.bd.Tema_terminal_visibleDAO.loadTema_terminal_visibleByORMID(mensaje.getEsta_en_visible().getID());
			if(temaPadre != null && ((Tema_terminal_visible)temaPadre).getNumeroMensajes()==0)
				return true;
			
			/**temaPadre = foroindaltronia.bd.Tema_teminal_ocultoDAO.loadTema_teminal_ocultoByORMID(mensaje.getEsta_en_oculto().getID());
				if(temaPadre != null && ((Tema_teminal_oculto)temaPadre).getNumeroMensajes()==0)
					return true;**/
			
		} catch (PersistentException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return false;
		
	}

	public void eliminarTemaATravesDeMensaje(Mensaje mensaje) {
		Tema temaPadre = mensaje.getEsta_en_visible();
		if(temaPadre instanceof Tema_terminal_visible)
		{
			try {
				temaPadre = foroindaltronia.bd.Tema_terminal_visibleDAO.loadTema_terminal_visibleByORMID(temaPadre.getID());
				foroindaltronia.bd.Tema_terminal_visibleDAO.deleteAndDissociate((Tema_terminal_visible)temaPadre);
				System.out.println("Tiene que borrar...");
			} catch (PersistentException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			
		}else if(temaPadre == null)
		{
			temaPadre = mensaje.getEsta_en_oculto();
			foroindaltronia.bd.Tema_teminal_ocultoDAO.deleteAndDissociate((Tema_teminal_oculto)temaPadre);
		}
	}

	public Tema getTemaTerminalPorNombre(String nombrePadre) {
		try {
			return foroindaltronia.bd.TemaDAO.loadTemaByQuery("Nombre ='"+nombrePadre+"' AND (Discriminator = 'tema_terminal_visible' OR Discriminator = 'tema_teminal_oculto')", null);
		} catch (PersistentException e) {
			e.printStackTrace();
			return null;
		}
	}
	
	public void eliminarTema(Tema temaTerminal) {
		try {
		if(temaTerminal instanceof Tema_terminal_visible)
		{
				Tema_terminal_visible temaABorrar = foroindaltronia.bd.Tema_terminal_visibleDAO.loadTema_terminal_visibleByORMID(((Tema_terminal_visible)temaTerminal).getID());
				foroindaltronia.bd.Tema_terminal_visibleDAO.deleteAndDissociate(temaABorrar);
		}
		else if(temaTerminal instanceof Tema_teminal_oculto)
		{
			Tema_teminal_oculto temaABorrar = foroindaltronia.bd.Tema_teminal_ocultoDAO.loadTema_teminal_ocultoByORMID(((Tema_teminal_oculto)temaTerminal).getID());
			foroindaltronia.bd.Tema_teminal_ocultoDAO.deleteAndDissociate(temaABorrar);
	}
		} catch (PersistentException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

	public Tema[] getTemasTerminalesFrecuentesNoRegistrado() {
		try {
			Tema[] listadoTemas = foroindaltronia.bd.TemaDAO.listTemaByQuery("NumeroVisitasVisible >= '2'",null);
			return listadoTemas;
		} catch (PersistentException e) {
			e.printStackTrace();
			return null;
		}
	}
		
		public Tema[] getTemasTerminalesFrecuentes() {
			try {
				Tema[] listadoTemas = foroindaltronia.bd.TemaDAO.listTemaByQuery("NumeroVisitasVisible >= '2' OR NumeroVisitasOculto >= '2'",null);
				return listadoTemas;
			} catch (PersistentException e) {
				e.printStackTrace();
				return null;
			}
	}

		public Tema[] buscarTemaTerminalPorNombre(String text) {
			foroindaltronia.bd.Tema[] foroIndaltroniaBDTema=null;
			try {
				foroIndaltroniaBDTema = foroindaltronia.bd.TemaDAO.listTemaByQuery("Nombre = '%"+text+"%' AND (Discriminator = 'tema_terminal_visible' OR Discriminator = 'tema_teminal_oculto')",null);
				System.out.println("Numero: "+foroIndaltroniaBDTema.length);
			} catch (PersistentException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			return foroIndaltroniaBDTema;
		}
}